The process of debugging software generally includes finding bugs, determining the cause of bugs, and fixing such bugs. For various reasons, finding certain bugs may be very difficult. One reason is that the number of possible inputs to an application may be extremely high. For example, even an application whose only inputs include a simple wizard with four input pages, each having four check boxes would have a number of possible input combinations that is quite high. Testing each of these inputs manually may be difficult and time consuming.